// 导入 Express 模块
const express = require('express');
// 创建 Express 的服务器实例
const app = express();
const db = require('./db/index');
const bodyParser = require('body-parser');

// 导入并配置 cors 中间件
const cors = require('cors');
app.use(cors());

// 使用 body-parser 中间件来解析 POST 请求的请求体
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());


// 封装 res.cc 函数
app.use((req, res, next) => {
    res.cc = function (err, status = 500) {
        res.status(status).send({
            status,
            msg: err instanceof Error ? err.message : err,
        });
    };
    next();
});

// 测试数据库连接是否正常
db.getConnection(function (err, connection) {
    if (err) {
        console.error('数据库连接失败：', err.stack);
        return;
    }
    console.log('数据库连接成功，线程ID为：', connection.threadId);
    connection.release();
});

//静态资源托管
app.use(express.static('public'));


// 导入总路由
const totalRoute = require('../service/router/Aroutes');
app.use('/', totalRoute);

// 定义错误级别中间件
app.use((err, req, res, next) => {
    // 身份验证失败导致的错误
    if (err.name === 'UnauthorizedError') return res.cc('身份验证失败!');
    res.cc(err);
});

// 监听端口
app.listen(8090, () => {
    console.log(`Server is running at http://127.0.0.1:8090`);
});
